package com.ylsk.check.service.impl;

import java.util.Date;
import java.util.List;

import com.ylsk.check.domain.vo.CheckItemVO;
import com.ylsk.common.config.SnowIdConfig;
import com.ylsk.common.constant.GlobalConstants;
import com.ylsk.common.constant.HttpStatus;
import com.ylsk.common.exception.ServiceException;
import com.ylsk.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ylsk.check.mapper.CheckItemMapper;
import com.ylsk.check.domain.CheckItem;
import com.ylsk.check.service.ICheckItemService;

/**
 * 检查内容Service业务层处理
 *
 * @author ysy
 * @date 2023-12-05
 */
@Service
public class CheckItemServiceImpl implements ICheckItemService
{
    @Autowired
    private CheckItemMapper checkItemMapper;

    @Autowired
    private SnowIdConfig snowIdConfig;

    /**
     * 查询检查内容
     *
     * @param checkItemId 检查内容主键
     * @return 检查内容
     */
    @Override
    public CheckItemVO selectCheckItemByCheckItemId(Long checkItemId)
    {
        return checkItemMapper.selectCheckItemByCheckItemId(checkItemId);
    }

    /**
     * 查询检查内容列表
     *
     * @param checkItem 检查内容
     * @return 检查内容
     */
    @Override
    public List<CheckItemVO> selectCheckItemList(CheckItem checkItem)
    {
        return checkItemMapper.selectCheckItemList(checkItem);
    }

    /**
     * 新增检查内容
     *
     * @param checkItem 检查内容
     * @return 结果
     */
    @Override
    public int insertCheckItem(CheckItem checkItem)
    {
        checkItem.setCheckItemId(snowIdConfig.getSnowId());
        return checkItemMapper.insert(checkItem);
    }

    /**
     * 修改检查内容
     *
     * @param checkItem 检查内容
     * @return 结果
     */
    @Override
    public int updateCheckItem(CheckItem checkItem)
    {
        Long checkItemId = checkItem.getCheckItemId();
        if(null == checkItemId){
            throw new ServiceException("检查项id不能为空！");
        }
        checkItem.setUpdateTime(new Date());
        return checkItemMapper.updateById(checkItem);
    }

    /**
     * 批量删除检查内容
     *
     * @param checkItemIds 需要删除的检查内容主键
     * @return 结果
     */
    @Override
    public int deleteCheckItemByCheckItemIds(Long[] checkItemIds)
    {
        return checkItemMapper.deleteCheckItemByCheckItemIds(checkItemIds);
    }

    /**
     * 删除检查内容信息
     *
     * @param checkItemId 检查内容主键
     * @return 结果
     */
    @Override
    public int deleteCheckItemByCheckItemId(Long checkItemId)
    {
        if(null == checkItemId){
            throw new ServiceException("检查项id不能为空");
        }
        CheckItem checkItem = checkItemMapper.selectById(checkItemId);
        // 设置状态为删除
        checkItem.setDelFlag(GlobalConstants.DELETED);
        return checkItemMapper.updateById(checkItem);
    }
}
